package co.edu.uniandes.truequeAndes.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import co.edu.uniandes.truequeAndes.fachada.TruequeAndes;
import co.edu.uniandes.truequeAndes.vos.Cliente;
import co.edu.uniandes.truequeAndes.vos.ValueClienteEnPaquete;
import co.edu.uniandes.truequeAndes.vos.ValueRF23;

public class ServletVerDatos extends ServletTemplate{

	@Override
	public String darTituloPagina(HttpServletRequest request) {
		String verificar=request.getParameter("idseleccionar");
		if(verificar==null||verificar.equals(""))
		return "fallo";
		return "exito";
	}

	@Override
	public String darImagenTitulo(HttpServletRequest request) {
		// TODO Auto-generated method stub
		return "uniandes.png";
	}

	@Override
	public void escribirContenido(HttpServletRequest request,
			HttpServletResponse response) throws IOException, Exception {
		TruequeAndes t=TruequeAndes.darInstancia();
		t.inicializarRuta();
		PrintWriter escritor=response.getWriter();
		Cliente obtenido=(Cliente)request.getSession().getAttribute("cliente");
		request.getSession().setAttribute("cliente", obtenido);
		long numeroiini=System.nanoTime();
		
		if(darTituloPagina(request).equals("fallo"))
		{
			escritor.println("<table width=\"100%\" align=\"center\">");
			escritor.println("<tr><td align=\"center\">No se ha seleccionado ningun producto</td></tr>");
			escritor.println("<tr><td align=\"cneter\"><form method=\"POST\" action=\"ServletVerProductosOferta.htm\"><input type=\"submit\" name=\"regresar\" value=\"Regresar\"/></form></td></tr></table>");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			long numerofini=System.nanoTime();
        	numerofini=numerofini-numeroiini;
        	
        	escritor.println("<table width=\"100\" align=\"center\">");
        	escritor.println("<tr><td align=\"center\">  " + numerofini + " en nanosegundos</td></tr></table>");
			
		}
		else
		{
			ArrayList productosDemandados=t.darProductosOfertadosEnPaquete(request.getParameter("idseleccionar"));
			BigInteger idOferta=new BigInteger(request.getParameter(request.getParameter("idseleccionar")));
			request.getSession().setAttribute("idOferta", idOferta);
			
			boolean DuenoOfertando=false;
			escritor.println("<table width=\"100%\" align=\"center\" border=\"1\">");
			escritor.println("<tr>");
			escritor.println("<td width=\"50%\" align=\"center\"><b>Oferta</b></td>");
			escritor.println("<td width=\"50%\" align=\"center\"><b>Demanda</b>");
			escritor.println("</td>");
			escritor.println("</tr>");
			escritor.println("<tr>");
			ValueRF23 algo=(ValueRF23)productosDemandados.get(0);
			
			escritor.println("<td rowspan="+productosDemandados.size() +"\" align=\"left\" width=\"50%\">" + algo.getNombreProducto() + " con valor de " + algo.getValorComercial()+"</td>");
			escritor.print("<td rowspan="+productosDemandados.size() +"\" align=\"left\" width=\"50%\">");
			productosDemandados=t.darProductosDemandadosEnPaquete(request.getParameter("idseleccionar"));
			for (int i = 0; i < productosDemandados.size(); i++)
			{
				algo=(ValueRF23)productosDemandados.get(i);
				escritor.print("<li>" + algo.getNombreProducto() + " con valor de " + algo.getValorComercial() +    "</li>");
			}
			escritor.print("</td>\n");
			escritor.println("</tr>");
			
			escritor.println("</table>");
			escritor.println("<table width=\"100%\" align=\"center\">");
			
			ArrayList omfg=t.darClientesEnOferta(request.getParameter("idseleccionar"));
			boolean esduenoofertando=false;
			for (int i = 0; i <omfg.size()&&!esduenoofertando; i++) 
			{
				ValueClienteEnPaquete esta=(ValueClienteEnPaquete)omfg.get(i);
				if(esta.getCorreo().equalsIgnoreCase(obtenido.darEmail()))
					esduenoofertando=true;
			}
			DuenoOfertando=esduenoofertando;
			
			int nivel=t.darnivelOfertas(request.getParameter("idseleccionar"));
			if((DuenoOfertando&&(nivel==0||nivel==2||nivel==4))||(!DuenoOfertando&&(nivel==1||nivel==3)))
			{
				escritor.println("<table width=\"100%\" align=\"cemter\">");
				escritor.println("<tr><td align=\"center\"><form method=\"POST\" action=\"ServletGenerarContraOferta.htm\"><input type=\"submit\" name=\"Generar\" value=\"Generar ContraOferta\"/></form></td></tr></table>");
				escritor.println("");
				escritor.println("");
				escritor.println("");
				escritor.println("");
				escritor.println("");
				escritor.println("");
				escritor.println("");
				escritor.println("");
				
			}
			BigInteger numerogrande=new BigInteger(request.getParameter("idseleccionar"));
			request.getSession().setAttribute("numerogrande", numerogrande);
			escritor.println("<table width=\"100%\" align=\"center\">");
			escritor.println("<tr>");
			escritor.println("<td width=\"25%\" align=\"center\"/>");
			escritor.println("<td width=\"25%\" align=\"center\"><form method=\"POST\" action=\"ServletMensaje.htm\"><input type=\"submit\" name=\"aceptar\" value=\"Aceptar\"/></form></td>");
			escritor.println("<td width=\"25%\" align=\"center\"><form method=\"POST\" action=\"ServletCancelo.htm\"><input type=\"submit\" name=\"Rechazar\" value=\"Rechazar\"></form></td>");
			escritor.println("<td width=\"25%\" align=\"center\"/>");
			escritor.println("</tr></table>");
			escritor.println("<table width=\"100%\" align=\"center\"><tr><td align=\"center\"><form method=\"POST\" action=\"ServletVerOfertas.htm\"><input type=\"submit\" name=\"volver\" value=\"Volver\"/></form></td></tr></table>");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			escritor.println("");
			long numerofini=System.nanoTime();
        	numerofini=numerofini-numeroiini;
        	
        	escritor.println("<table width=\"100\" align=\"center\">");
        	escritor.println("<tr><td align=\"center\">  " + numerofini + " en nanosegundos</td></tr></table>");
			
		}
		
	}

}
